﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Iacym.Entities;
using System.Data.Objects;

namespace Iacym.Repository
{
    public class AgendumRepository : MasterRepository, IAgendumRepository
    {
        public void AddAgenda(Agendum agenda)
        {
            context.Entry(agenda.PERSONA).State = System.Data.EntityState.Unchanged;
            context.AGENDA.Add(agenda);
            context.SaveChanges();
        }


        public bool DuplicidadCita(DateTime inicio, DateTime fin)
        {
            var query = from p in context.AGENDA
                        where p.FechaInicio == inicio || p.FechaFin == fin
                        select p;

            return query.Any();
        }


        public List<Agendum> GetAllFromAgenda()
        {
            IQueryable<Agendum> query = new EnumerableQuery<Agendum>(from p in context.AGENDA.Include("PERSONA")
                                                                       select p);

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);            
            return query.ToList();
        }


        public Agendum BuscarAgendaPorFechas(DateTime inicio, DateTime fin)
        {
            var query = from p in context.AGENDA
                        where p.FechaInicio == inicio && p.FechaFin == fin
                        select p;

            return query.SingleOrDefault();
        }


        public void UpdateAgenda(Agendum agenda)
        {
            agenda.PERSONA = null;
            context.AGENDA.Attach(agenda);
            context.Entry(agenda).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }
    }
}
